home *** CD-ROM | disk | FTP | other *** search
/ SunSoft Catalyst CDWARE 1996 May to August / Catalyst CDWARE 1996 May to August.iso / .products / JavaWorld / javaworld / cgi-bin / jw-adsales.cgi.old < prev    next >
Text File  |  1996-02-27  |  8KB  |  255 lines

  1. #!/usr/local/bin/perl
  2. # jw-adsales.cgi - script to process e-mail sent from JavaWorld.
  3. # this is a kludge until the html mailto becomes ubiquitous.
  4. #
  5. # usage: jw-adsales.cgi <recipient> [ <return href> <return tag> | send ]
  6. #
  7. # if 'send' is the last command-line argument, jw-adsales.cgi assumes
  8. # that it is to send the enclosed datastream to the recipient denoted by
  9. # the first command-line argument. otherwise, it interprets the second
  10. # and third command-line arguments as a return href and tag for 'back-to'
  11. # functionality.
  12. #
  13. # it's fairly crucial that the e-mail address does not contain +
  14. # signs, as this will confuse jw-adsales.cgi's interpretation of
  15. # command-line arguments.
  16. #
  17. # complain to david.burnette@javaworld.com if there are problems.
  18.  
  19.  
  20. if ("$ARGV[$#ARGV]" eq "send") { # catch message from first run of jw-adsales.cgi
  21.  
  22.    $defaultfrom="javaworld\@javaworld.com";
  23.    $defaultname="JavaWorld";
  24.    $mailprog="/usr/lib/sendmail";
  25.    $bcc="jwbcc\@javaworld.com"; # recipient of failsafe copy
  26.    $bccname="JW bcc";
  27.    $bccsubject="bccmail to $ARGV[0]";
  28.    $date=`date`; chop($date);
  29.  
  30.    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  31.  
  32.    if (@ARGV == 1) {
  33.       $recipient="david.burnette\@javaworld.com";
  34.       $href1="/javaworld/index.html";
  35.       $src1="/javaworld/icons/b-thismonth.gif";
  36.       $alt1="[This month's table of contents]";
  37.    }
  38.    elsif (@ARGV == 2) {
  39.       $recipient="$ARGV[0]";
  40.       $href1="/javaworld/index.html";
  41.       $src1="/javaworld/icons/b-thismonth.gif";
  42.       $alt1="[This month's table of contents]";
  43.    }
  44.    elsif (@ARGV == 3) {
  45.       $recipient="$ARGV[0]";
  46.       $href1="$ARGV[1]";
  47.       $src1="/javaworld/icons/b-thismonth.gif";
  48.       $alt1="[This month's table of contents]";
  49.    }
  50.    else {
  51.       $recipient="$ARGV[0]";
  52.       $href1="/javaworld/index.html";
  53.       $src1="/javaworld/icons/b-thismonth.gif";
  54.       $alt1="[This month's table of contents]";
  55.       $href2="$ARGV[1]#$ARGV[2]";
  56.       $src2="/javaworld/icons/b-backtostory.gif";
  57.       $alt2="[Back to story]";
  58.    }
  59.  
  60.    $HREF1="<A HREF=\"$href1\"><IMG SRC=\"$src1\" ALT=\"$alt1\"></A>";
  61.    if (defined($href2)) {
  62.       $HREF2="<A HREF=\"$href2\"><IMG SRC=\"$src2\" ALT=\"$alt2\"></A>";
  63.    }
  64.  
  65.  
  66.    # Split the name-value pairs
  67.    @pairs = split(/&/,$buffer);
  68.  
  69.    foreach $pair (@pairs)
  70.    {
  71.       ($name,$value) = split(/=/,$pair);
  72.       $value =~ tr/+/ /;
  73.       $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  74.  
  75.       # Stop people from using subshells to execute commands
  76.       $value =~ s/~!/ ~!/g; 
  77.  
  78.       $FORM{$name} = $value;
  79.    }
  80.  
  81.  
  82.    # check for empty message; thwart bastards
  83.  
  84.    if ($FORM{'name'} =~ /^[\s]*$/
  85.    || $FORM{'title'} =~ /^[\s]*$/
  86.    || $FORM{'company'} =~ /^[\s]*$/
  87.    || $FORM{'address'} =~ /^[\s]*$/
  88.    || ($FORM{'phone'} =~ /^[\s]*$/ && $FORM{'email'} =~ /^[\s]*$/)
  89.    || $FORM{'message'} =~ /^[\s]*$/) {
  90.       print <<END_OF_FORM;
  91. Content-TYPE: text/html
  92.  
  93. <HTML>
  94. <HEAD><TITLE>JavaWorld-Adsales E-mail Form</TITLE></HEAD>
  95. <BODY>
  96. <H3>
  97. An empty message cannot be sent. It must contain a name, title,
  98. company, phone, e-mail or postal address, and a message. 
  99. <P>
  100. To send a message, return to the mail form by hitting your browser\'s 
  101. back button. 
  102. </H3>
  103. </BODY>
  104. </HTML>
  105. END_OF_FORM
  106.    }
  107.    else {  # send thank-you note to browser
  108.  
  109.       print "Content-TYPE: text/html\n\n";
  110.       print "<HTML>\n";
  111.       print "<HEAD><TITLE>JavaWorld</TITLE></HEAD>\n";
  112.       print "<BODY>\n";
  113.       print "$HREF1$HREF2\n";
  114.       print "<H3>Thank you for sending mail to $recipient. We appreciate your patronage.</H3>\n";
  115.       print "</BODY>\n";
  116.       print "</HTML>\n";
  117.  
  118.  
  119.       # send failsafe copy of raw data to bcc
  120.  
  121.       open (MAIL, "|$mailprog $bcc") || die "Can't open $mailprog!\n";
  122.       print MAIL "From: $bcc ($bccname)\n";
  123.       print MAIL "To: $bcc\n";
  124.       print MAIL "Subject: $bccsubject\n\n";
  125.       print MAIL "BEGIN RECORD $date\n";
  126.       print MAIL "recipient=$recipient\n";
  127.       print MAIL "href1=$href1\n";
  128.       print MAIL "src1=$src1\n";
  129.       print MAIL "alt1=$alt1\n";
  130.       print MAIL "href2=$href2\n";
  131.       print MAIL "src2=$src2\n";
  132.       print MAIL "alt2=$alt2\n";
  133.       print MAIL "CONTENT_LENGTH=$ENV{'CONTENT_LENGTH'}\n";
  134.       print MAIL "CONTENT_TYPE=$ENV{'CONTENT_TYPE'}\n";
  135.       print MAIL "DOCUMENT_ROOT=$ENV{'DOCUMENT_ROOT'}\n";
  136.       print MAIL "GATEWAY_INTERFACE=$ENV{'GATEWAY_INTERFACE'}\n";
  137.       print MAIL "HTTP_REFERER=$ENV{'HTTP_REFERER'}\n";
  138.       print MAIL "HTTP_USER_AGENT=$ENV{'HTTP_USER_AGENT'}\n";
  139.       print MAIL "QUERY_STRING=$ENV{'QUERY_STRING'}\n";
  140.       print MAIL "REMOTE_ADDR=$ENV{'REMOTE_ADDR'}\n";
  141.       print MAIL "REMOTE_HOST=$ENV{'REMOTE_HOST'}\n";
  142.       print MAIL "REQUEST_METHOD=$ENV{'REQUEST_METHOD'}\n";
  143.       print MAIL "SCRIPT_NAME=$ENV{'SCRIPT_NAME'}\n";
  144.       print MAIL "SERVER_NAME=$ENV{'SERVER_NAME'}\n";
  145.       print MAIL "SERVER_PORT=$ENV{'SERVER_PORT'}\n";
  146.       print MAIL "SERVER_PROTOCOL=$ENV{'SERVER_PROTOCOL'}\n";
  147.       print MAIL "SERVER_SOFTWARE=$ENV{'SERVER_SOFTWARE'}\n";
  148.       print MAIL "ARGV=@ARGV\n";
  149.       print MAIL "STDINDATA=$buffer\n";
  150.       print MAIL "END RECORD $date\n";
  151.       close(MAIL);
  152.  
  153.  
  154.       # send mail to $recipient
  155.  
  156.       open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";
  157.       print MAIL "From: $FORM{'email'} ($FORM{'name'})\n";
  158.       print MAIL "To: $recipient\n";
  159.       print MAIL "Subject: $FORM{'subject'}\n\n";
  160.       print MAIL "$FORM{'message'}\n";
  161.       print MAIL "\n------------------------------------------------------------\n\n";
  162.       print MAIL "Name: $FORM{'name'}\n";
  163.       print MAIL "Title: $FORM{'title'}\n";
  164.       print MAIL "Company: $FORM{'company'}\n";
  165.          @f = split(/\n/,$FORM{'address'});
  166.       print MAIL "Address: $f[0]\n";
  167.       shift(@f);
  168.       foreach $f (@f) {
  169.          print MAIL "         $f[$f]\n";
  170.       }
  171.       print MAIL "Phone: $FORM{'phone'}\n";
  172.       print MAIL "E-mail: $FORM{'email'}\n\n";
  173.       print MAIL "E-mail from JavaWorld (http://www.javaworld.com)\n";
  174.       print MAIL "Agent: $ENV{'HTTP_USER_AGENT'}\n";
  175.       print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n";
  176.       print MAIL "Remote IP address: $ENV{'REMOTE_ADDR'}\n";
  177.       print MAIL "HTTP_REFERER=$ENV{'HTTP_REFERER'}\n";
  178.       close(MAIL);
  179.  
  180.    } # end of if bastard else sendmail
  181.  
  182.    exit 0;
  183. }
  184. else {  # present message form to browser
  185.  
  186.    if (@ARGV == 0) {
  187.       $recipient="webmaster\@javaworld.com";
  188.       $href="/javaworld/index.html";
  189.    }
  190.    elsif (@ARGV == 1) {
  191.       $recipient="$ARGV[0]";
  192.       $href="/javaworld/index.html";
  193.    }
  194.    elsif (@ARGV == 2) {
  195.       $recipient="$ARGV[0]";
  196.       $href="$ARGV[1]";
  197.    }
  198.    else {
  199.       $recipient="$ARGV[0]";
  200.       $href="$ARGV[1]+$ARGV[2]";
  201.    }
  202.  
  203.    $banner="Send mail to $recipient";
  204.  
  205.    print <<END_OF_FORM;
  206. Content-TYPE: text/html
  207.  
  208. <HTML>
  209. <HEAD><TITLE>JavaWorld E-mail Form</TITLE></HEAD>
  210. <BODY>
  211. <FORM METHOD=POST ACTION="http://www.javaworld.com/cgi-bin/jw-adsales.cgi?$recipient+$href+send">
  212. <P>
  213. <BLOCKQUOTE>
  214. <H2>For advertising information on <EM>JavaWorld</EM> call
  215. or e-mail (using the form below) Colette McMullen, Associate Publisher,
  216. colette.mcmullen\@javaworld.com, 415-267-4527.</H2>
  217. </BLOCKQUOTE>
  218.  
  219. <P>
  220. <STRONG>Your Name:</STRONG>
  221. <INPUT TYPE="text" NAME="name" SIZE ="50">
  222. <P>
  223. <STRONG>Your Title:</STRONG>
  224. <INPUT TYPE="text" NAME="title" SIZE ="50">
  225. <P>
  226. <STRONG>Your Company:</STRONG>
  227. <INPUT TYPE="text" NAME="company" SIZE ="50">
  228. <P>
  229. <STRONG>Your Postal Address:</STRONG><BR>
  230. <TEXTAREA COLS=50 ROWS=5 NAME="address"></TEXTAREA>
  231. <P>
  232. <STRONG>Your Phone:</STRONG>
  233. <INPUT TYPE="text" NAME="phone" SIZE ="50">
  234. <P>
  235. <STRONG>Your e-mail address:</STRONG>
  236. <INPUT TYPE="text" NAME="email" SIZE ="50">
  237. <P>
  238. <STRONG>Subject:</STRONG>
  239. <INPUT TYPE="text" NAME="subject" SIZE ="50">
  240. <P>
  241. <STRONG>Please enter your message below:</STRONG><BR>
  242. <TEXTAREA COLS=70 ROWS=10 NAME="message"></TEXTAREA>
  243. <BR>
  244. <INPUT TYPE="submit" VALUE="Send message">
  245. <INPUT TYPE="reset" VALUE="Clear form"</P>
  246. </FORM>
  247. </BODY>
  248. </HTML>
  249. END_OF_FORM
  250.  
  251.    exit 0;
  252.  
  253. }
  254.  
  255.